package com.unju.ventanas.proyecto.actividad.recurso;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JTextArea;

import org.postgresql.jdbc3.Jdbc3PoolingDataSource;

import com.unju.hibernate.entidades.Tiporecurso;
import com.unju.hibernate.patronDAO.imp.TipoRecursoDAOImp;
import com.unju.utils.ConstantesGlobales;
import com.unju.ventanas.principal.JFrmPrincipal;
import com.unju.ventanas.proyecto.JPNuevoProyecto;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Iterator;

public class JDTipoRecurso extends JDialog {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8987605018930974833L;
	private final JPanel contentPanel = new JPanel();
	private JTextField txtNombre;
	protected Tiporecurso tipoRecurso;
	private JTextArea txtDescripcion;
	private boolean guardado;
	private static JDTipoRecurso jdTipoRecurso;

	public static JDTipoRecurso getInstance() {
		if (jdTipoRecurso == null)
			jdTipoRecurso = new JDTipoRecurso(JFrmPrincipal.getInstance());
		return jdTipoRecurso;
	}

	private JDTipoRecurso(JFrmPrincipal principal) {
		super.setTitle(ConstantesGlobales.TITULO_NUEVO_TIPO_RECURSO);
		setBounds(100, 100, 357, 300);
		getContentPane().setLayout(new BorderLayout());
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		contentPanel.setLayout(null);

		JLabel lblNombre = new JLabel("Nombre:");
		lblNombre.setBounds(10, 23, 85, 14);
		contentPanel.add(lblNombre);

		txtNombre = new JTextField();
		txtNombre.setBounds(121, 20, 210, 20);
		contentPanel.add(txtNombre);
		txtNombre.setColumns(10);

		txtDescripcion = new JTextArea();
		txtDescripcion.setBounds(121, 48, 210, 155);
		contentPanel.add(txtDescripcion);

		JLabel lblDescripcion = new JLabel("Descripcion:");
		lblDescripcion.setBounds(10, 53, 110, 14);
		contentPanel.add(lblDescripcion);

		JLabel lblMaxPalabras = new JLabel("max 500 \r\npalabras");
		lblMaxPalabras.setBounds(10, 77, 110, 33);
		contentPanel.add(lblMaxPalabras);
		{
			JPanel buttonPane = new JPanel();
			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
			getContentPane().add(buttonPane, BorderLayout.SOUTH);
			{
				JButton okButton = new JButton(ConstantesGlobales.BTN_ACEPTAR);
				okButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						agregarTipoRecurso();
					}
				});
				buttonPane.add(okButton);
				getRootPane().setDefaultButton(okButton);
			}
			{
				JButton cancelButton = new JButton(
						ConstantesGlobales.BTN_CANCELAR);
				cancelButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						dispose();
						limpiarCampos();
					}
				});
				buttonPane.add(cancelButton);
			}
		}
	}

	public Tiporecurso getTipoRecurso() {
		return tipoRecurso;
	}

	public boolean getGuardado() {
		return guardado;
	}

	protected void agregarTipoRecurso() {

		tipoRecurso = new Tiporecurso();
		tipoRecurso.setNombre(txtNombre.getText());
		tipoRecurso.setDescripcion(txtDescripcion.getText());
//		Tiporecurso aux = new TipoRecursoDAOImp().getTipoRecurso(tipoRecurso
//				.getNombre());
		if (!existeElemento()) {
			JPNuevoProyecto.tipoRecursosList.add(tipoRecurso);
			guardado = true;
			dispose();
		} else {
			JOptionPane.showMessageDialog(null,
					"Recurso existente, puede intentar usando otro nombre.");
		}
		limpiarCampos();
	}

	private boolean existeElemento() {
		Iterator<Tiporecurso> iter = JPNuevoProyecto.tipoRecursosList
				.iterator();
		while (iter.hasNext()) {
			if (iter.next().getNombre().equals(tipoRecurso.getNombre())) {
				return true;
			} else {
				return false;
			}
		}
		return false;
	}
	
	private void limpiarCampos(){
		txtNombre.setText("");
		txtDescripcion.setText("");
	}
}
